import request from '../utils/request';

/**
 * 创建设备类型接口
 * @param {string} name 设备类型名称
 * @param {string} description 设备类型描述
 * @param {string} imageUrl 类型图片Url
 * @param {Boolean} active 是否启用
 * @param {number[]} deviceParameterIdList 设备参数id列表
 * @param {number} deviceParameterIdList 默认设备参数id
 */
export function createDeviceTypeApi(name, description, imageUrl, active, deviceParameterIdList, defaultParameterId) {
  return request({
    url: '/device_types',
    method: 'post',
    data: Object.assign(
      {
        name: name,
        active: active,
        device_parameter_id_list: deviceParameterIdList,
        default_parameter_id: defaultParameterId
      },
      description ? { description: description } : null,
      imageUrl ? { image_url: imageUrl } : null
    )
  
  });
}

/**
 * 删除设备类型接口
 * @param {string} uuid
 */
export function deleteDeviceTypeApi(uuid) {
  return request({
    url: '/device_types/' + uuid,
    method: 'delete'
  });
}

/**
 * 更新设备类型
 * @param {string} uuid
 * @param {string} name 设备类型名称
 * @param {string} description 设备类型描述
 * @param {string} imageUrl 类型图片Url
 * @param {Boolean} active 是否启用
 * @param {number[]} deviceParameterIdList 设备参数id列表
 * @param {number} deviceParameterIdList 默认设备参数id
 */
export function updateDeviceTypeApi(
  uuid,
  name,
  description,
  imageUrl,
  active,
  deviceParameterIdList,
  defaultParameterId
) {
  return request({
    url: '/device_types/' + uuid,
    method: 'put',
    data: {
      name: name,
      description: description,
      image_url: imageUrl,
      active: active,
      device_parameter_id_list: deviceParameterIdList,
      default_parameter_id: defaultParameterId
    }
  });
}

/**
 * 获取设备类型列表
 * @param {number} pageIndex 页码下标，默认从0开始
 * @param {number} pageSize 每页大小
 * @param {string} sortType 正序or倒序
 * @param {string} orderBy 排序依据
 * @param {string} name 类型名称
 * @param {Boolean} active 是否可用
 */
export function getDeviceTypeListApi(pageIndex, pageSize, sortType, orderBy, name, active) {
  return request({
    url: '/device_types',
    method: 'get',
    params: Object.assign(
      {
        page_index: pageIndex,
        page_size: pageSize,
        sort_type: sortType,
        order_by: orderBy
      },
      name ? { name: name } : null,
      typeof active === 'boolean' ? { active: active } : null
    )
  });
}

/**
 * 获取设备类型列表
 * @param {string} uuid path
 */
export function getDeviceTypeInfoApi(uuid) {
  return request({
    url: '/device_types' + uuid,
    method: 'get'
  });
}

/**
 * 查询设备类型接口
 * @param {string} name 类型名称
 * @param {number} take 获取数量 5-100
 */
export function queryDeviceTypeListApi(name, take) {
  return request({
    url: '/device_types/query',
    method: 'get',
    params: { name, take }
  });
}
